// pages/my/near-shop/index.js
import regeneratorRuntime from '../../../utils/regeneratorRuntime.js'
import utils from '../../../utils/util.js'
const app = getApp()

Page({

  /**
   * 页面的初始数据
   */
  data: {
    shopList: [],
    userLocation:null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad (options) {
    this.chooseAddress()
  },

  onDetails({ currentTarget: { dataset: { id } } }){
    wx.navigateTo({
      url: `./details?id=${id}`
    })
  },

  chooseAddress() {
    wx.getSetting({
      success: (res) => {
        if (res.authSetting['scope.userLocation']) {
          this.getLocation()
        } else {
          wx.authorize({
            scope: 'scope.userLocation',
            success: () => {
              this.getLocation()
            },
            fail: () => {
              wx.showModal({
                title: '提示',
                content: '为了能让您更直观的看到您距离附近商家的位置，请您授权位置信息',
                confirmText: '好的',
                showCancel: false,
                confirmColor: '#45526B',
                success: () => {
                  wx.openSetting({
                    success: (res) => {
                      this.getLocation()
                    }
                  })
                }
              })
            }
          })
        }
      }
    })
  },

  onSearch({ detail}){
    this.getList(detail)
  },

  getLocation() {
    wx.getLocation({
      type: 'wgs84',
      success: (res) => {
        const latitude = res.latitude
        const longitude = res.longitude
        this.setData({
          userLocation: { latitude, longitude }
        })
        this.getList()
      }
    })
  },

  getList(k='') {
    let M = this.data.userLocation
    app.shop.getShops(k)
      .then(({ data }) => {
        if (data.length == 0) {
          app.toast('啊哦~ 没有找到合适的商家');
          return
        }
        let list = data.map(item => {
          item.distance =
            utils.getDistance(M.longitude, M.latitude, item.lng, item.lat).toFixed(2)
          return item
        }).sort((a, b) => {
          return a.distance - b.distance
        })
        this.setData({
          shopList: list
        })
      })
      .catch(err => {
        app.toast(err)
      })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})